package com.zzb.myshowme.utils;

import android.content.Context;
import android.util.Log;

import com.zzb.myshowme.bean.UserInfo;

import java.io.File;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * etCacheDir()方法用于获取/data/data/<application package>/cache目录
 * getFilesDir()方法用于获取/data/data/<application package>/files目录
 * 大部分应用是直接在SDCard的根目录下创建一个文件夹，然后把数据保存在该文件夹中。
 * 这样当该应用被卸载后，这些数据还保留在SDCard中，留下了垃圾数据。
 *
 *通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录，一般放一些长时间保存的数据
 * 通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录，一般存放临时缓存数据
 *
 * 如果使用上面的方法，当你的应用在被用户卸载后，SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除，不会留下垃圾信息。
 * 而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项
 * Context.getFileStreamPath("name") -> /data/data/<application package>/files/name
 * Environment.getDataDirectory() -> /data
 * Environment.getExternalStorageDirectory() -> /mnt/sdcard  其实就是sd卡的根目录
 *
 * 小米根目录 :外部存储/storage/emulated/0/
 */


/**
 * 登录帐号管理Created by Administrator on 2016/10/17.
 */
public class UserInfoUtils {
//    public static final String key_login_member = "user_message";
    public static final String LOGIN_MEMBER_KEY = "user_message";

    /**
     * 用户是否已经登录
     *
     * @param ctx
     * @return
     */
    public static boolean isLogined(Context ctx) {
        return FileUtils.isExistDataCache(ctx, LOGIN_MEMBER_KEY);
    }

    /**
     * 保存登录用户资料
     *
     * @param ctx
     * @param user
     */
    public static void writeLoginMember(Context ctx, UserInfo user) {

        ///data/data/com.zzb.myshowme/files
        File file = new File(ctx.getFilesDir(), LOGIN_MEMBER_KEY);
        if (file.exists()) {
            file.delete();
        }
        Log.i("UserInfoUtils", "ctx.getFilesDir() = " + ctx.getFilesDir());
        Log.i("UserInfoUtils", "ctx.getFilesDir() = " + ctx.getExternalFilesDir("name"));
        try {
            ObjectOutputStream oos = new ObjectOutputStream(ctx.openFileOutput(LOGIN_MEMBER_KEY, Context.MODE_PRIVATE));
            oos.writeObject(user);
            oos.close();
        } catch (Exception e) {

        }
    }

    /**
     * 获取登录用户信息
     *
     * @param ctx
     * @return
     */
    public static UserInfo readLoginMember(Context ctx) {
        UserInfo data = null;
        File file = new File(ctx.getFilesDir(), LOGIN_MEMBER_KEY);
        if (file.exists()) {
            try {
                ObjectInputStream ois = new ObjectInputStream(ctx.openFileInput(LOGIN_MEMBER_KEY));
                data = (UserInfo) ois.readObject();
                ois.close();
            } catch (Exception e) {
                e.printStackTrace();

            }
        }

        if (data == null) {
            data = new UserInfo();
        }
        return data;
    }

    /**
     * 删除登录用户资料
     *
     * @param cxt
     */
    public static void removeLoginMember(Context cxt) {
        File file = cxt.getFileStreamPath(LOGIN_MEMBER_KEY);
        file.delete();
    }
}
